/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package be.ugent.medirem.persistence.facade;

import be.ugent.medirem.persistence.entity.details.MedicationTaskDetails;
import be.ugent.medirem.persistence.entity.values.MedicationTaskValues;
import be.ugent.medirem.persistence.exception.EntityNotFoundException;
import be.ugent.medirem.persistence.util.TaskStatus;
import java.util.List;
import javax.ejb.Local;

/**
 *
 * @author Thomas Roelens
 */
@Local
public interface MedicationTaskDaoLocal {

    Long create(MedicationTaskValues details) throws IllegalArgumentException;

    void remove(Long taskId) throws IllegalArgumentException, EntityNotFoundException;

    void update(Long taskId, MedicationTaskValues details) throws IllegalArgumentException, EntityNotFoundException;

    void updateStatus(Long taskId, TaskStatus status) throws IllegalArgumentException, EntityNotFoundException;

    MedicationTaskDetails getDetails(Long taskId) throws IllegalArgumentException, EntityNotFoundException;

    List<String> getAllTaskStatus();

    String getCompleteTaskStatus();

    String getIncompleteTaskStatus();

    List<MedicationTaskDetails> getAllTasks(Long patientId) throws IllegalArgumentException, EntityNotFoundException;

    List<MedicationTaskDetails> getTasks(Long patientId, TaskStatus status) throws IllegalArgumentException, EntityNotFoundException;

    MedicationTaskDetails getNextTask(Long patientId, Long prescriptionId) throws IllegalArgumentException, EntityNotFoundException;

    List<MedicationTaskDetails> getTasks(Long patientId, Long prescriptionId) throws IllegalArgumentException, EntityNotFoundException;
}
